package com.hqd.ch03.v50.boot.web.servlet.server;

import com.hqd.ch03.v50.boot.web.server.ConfigurableWebServerFactory;
import com.hqd.ch03.v50.boot.web.server.MimeMappings;
import com.hqd.ch03.v50.boot.web.servlet.ServletContextInitializer;
import com.hqd.ch03.v50.boot.web.servlet.WebListenerRegistry;

import java.io.File;
import java.nio.charset.Charset;
import java.util.List;
import java.util.Locale;
import java.util.Map;

public interface ConfigurableServletWebServerFactory
        extends ConfigurableWebServerFactory, ServletWebServerFactory, WebListenerRegistry {

    /**
     * 设置上下文
     *
     * @param contextPath
     */
    void setContextPath(String contextPath);

    /**
     * 设置部署在web服务器中的应用程序的显示名称
     */
    void setDisplayName(String displayName);

    /**
     * 设置Session
     */
    void setSession(Session session);

    /**
     * 设置默认Servlet
     */
    void setRegisterDefaultServlet(boolean registerDefaultServlet);

    /**
     * 设置mime类型映射
     */
    void setMimeMappings(MimeMappings mimeMappings);

    /**
     * 设置web上下文要使用的文档根目录静态文件
     */
    void setDocumentRoot(File documentRoot);

    /**
     * 设置SCI接口
     */
    void setInitializers(List<? extends ServletContextInitializer> initializers);

    void addInitializers(ServletContextInitializer... initializers);

    /**
     * 设置将应用于服务器的JSP servlet的配置
     */
    void setJsp(Jsp jsp);

    /**
     * 将区域设置设置为字符集映射
     */
    void setLocaleCharsetMappings(Map<Locale, Charset> localeCharsetMappings);

    /**
     * 设置初始化参数
     */
    void setInitParameters(Map<String, String> initParameters);

    void setCookieSameSiteSuppliers(List<? extends CookieSameSiteSupplier> cookieSameSiteSuppliers);

    void addCookieSameSiteSuppliers(CookieSameSiteSupplier... cookieSameSiteSuppliers);

}

